Cloud computing has transformed the way applications are created and run in recent years. It employs the Infrastructure as a Service (IaaS) model in which customers outsource their computing and software capabilities to third party infrastructures and pay for the service usage on demand. Compared to the traditional computing model that uses dedicated, in-house infrastructures, cloud computing provides many advantages, including economies of scale, dynamic provisioning, and low capital expenditures. It allows customers to establish and rapidly expand a global presence in minutes rather than days or months, with the “pay-as-you-go” charging model.
The proliferation of virtualization technologies and rich Internet connectivity have brought an explosive growth in cloud computing. Tenants outsource their computation and storage to public cloud providers, and pay for the service usage on demand. This model offers unprecedented advantages in terms of cost and reliability, compared with traditional computing model that uses dedicated, in-house infrastructure. However, despite the tremendous momentums it grows, the future viability of cloud computing still depends on its offered performance and associated costs.
There have been some efforts to effectively allocate bandwidth in a cloud computing environment. Yet mechanisms proposed so far do not sufficiently explore a known deadline of a task to allocate bandwidth to the task, which will usually result in sub-optimal performance and resource utilization.